Some existing computing systems leverage various video coding standards to provide good video quality at lower bit rates than traditional video coding standards. These standards are also utilized by virtual machines (VMs) to present video content to users in a virtualized environment. Some of these systems rely on dividing a video stream into individual video frames, which are further subdivided into slices, then into macroblocks. While the macroblocks can be further divided, some widely used video coding standards leverage similarities between macroblocks identified across multiple video frames. In these examples, instead of maintaining and decoding information for each discrete video frame, variances between the identified similar macroblocks are tracked and utilized to decode other video frames, relying on the commonality between the macroblocks. The variance data, which includes information such as motion vectors, picture order counters, and other macroblock data, comprises a state or video decode state of each macroblock. In some examples, the video decode state includes picture buffer metadata or coding unit metadata.
These current systems permit suspension of a video stream presented to a user at the granularity of a central processing unit (CPU) software decode instruction, when live migrating the video stream from a source VM to a destination VM. But these existing systems, which rely on application programming interfaces (APIs) to access the CPU-based software decoders, frequently hide the internal state of the API, or of each video frame or macroblock from the VM decoding the video stream. The hidden internal state of the API and the hidden video decode state of the frames prohibit the destination VM from most efficiently resuming the decode operations of the video stream.